package io;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
IO:Input和Output，即：输入输出
java将输入和输出用“流Stream”表达，分为输入流和输出流，
我们可以将它们想象为连接我们的程序和另一个设备之向的“管道”，通过它们可以读写设备
Java将输入流和输出定义了两个对应的超类InputStream和OutputStream:
1)InputStream:
输入流，方向是从外界到程序的方向，用于读取数据的流，是一个抽象类，定义了读取字节的相关方法
2)OutputStream:
输出流，方向是从程序到外界的方向，用于写出数据的流，是一个抽象类，定义了写出字节的相关方法
文件流: FileInputStream和FileOutputStream
文件流继自InputStream和OutputStream，用于对文件进行读写操作
*/

public class FOSDemo {
    public static void main(String[] args) throws IOException {
        /*
        文件输出流两个常用的构造器：
        1）FileOutputStream（String fileName）
        2）FileOutputStream（File file）
        文件流创建时如果指定的文件不存在则会自动创建，前提是该文件所在的目录必须存在，若不存在则发生异常
        */
        File file =new File("fos.dat");
        FileOutputStream fos=new FileOutputStream(file);//根据File实例定义文件输出流
        //FileOutputStream fos=new FileOutputStream("fos.dat");//定义文件输出流
        /*
        void write（int d）：
        通过该输出流向目标位置写出1个字节，写出的是给定的int值对应的2进制的“低八位”

        当fos.write（1）时，向fos.dot中写入了1个字节
        00000000 00000000 00000000 00000001
        fos.write(1)               ^^^^^^^^
        00000001

        00000000 00000000 00000000 00000010
        fos.write(2)               ^^^^^^^^
        00000001 00000010
        */
        fos.write(255);//向fos。dot中写入1个字节
        //fos.write(2);
        System.out.println("已写出");
        //关闭流
        fos.close();
    }
}
